• 2024-06-16
  • unique

PostgreSQL Debug

  • just running EXPLAIN SELECT ... only gives estimates, EXPLAIN ANALYZE SELECT ... runs the query and provides the “real” cost
  • use EXPLAIN (ANALYZE, BUFFERS) SELECT ... gives some more information
    • extreme version is EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON) SELECT ...
  • visualizing EXPLAIN: https://explain.dalibo.com/
  • enable pg_stat by setting the following configuration options:
    • shared_preload_libraries=pg_stat_statements
    • pg_stat_statements.track=all
  • run ANALYZE on tables after bulk imports, this updates the estimates for the query planer (so indexes are correctly used)
  • compare Data in different tables, including with other types: https://github.com/CrunchyData/pgCompare

sources